/**
 * Created by wry on 2014/12/22.
 */
var amqp = require('amqp');
var toolUtil = require('../common/utils/toolUtil');
var shortMessage = mongoose.model('system_codeShortMessage');
var loginOrRegisterLog = mongoose.model('system_loginOrRegisterLog');
var Users = mongoose.model('user');
var pushRecords = mongoose.model('system_pushRecords');
var operateMessage = mongoose.model('system_operateMessages');
var moment = require('moment');
var async = require('async');
var cacheUtil = require('../common/utils/cacheUtil');
var SystemMessage = mongoose.model('system_messages');

global.mqConnection = amqp.createConnection(rabbitMqOpt);


//Wait for connection to become established.
mqConnection.on('ready', function () {

    logger.info('mqConnection is ready');

    //var exchange = mqConnection.exchange('ex.push', {type: 'direct', durable: true, autoDelete: false});
    //exchange.on('open', function () {
    //    logger.info('Exchange ' + exchange.name + ' is open');
    //});
    //
    //mqConnection.queue('verificationCodeMessage', function (q) {
    //    //Catch all messages
    //    q.bind('#');
    //    //Receive messages
    //    q.subscribe(function (message) {
    //        logger.debug(message);
    //
    //        var msg = '您的验证码为：' + message.verificationCode + '。该验证码10分钟内有效，请在页面中输入以完成验证。';
    //
    //        var data = {
    //            "phoneNum": message.mobilePhone,
    //            "content": msg
    //        };
    //
    //        mqConnection.publish('q.msg.publish', data);
    //
    //        //msg = toolUtil.stringToHex(msg);
    //        //
    //        //restClient.get('http://esms1.etonenet.com/sms/mt?command=MT_REQUEST&spid='
    //        //+ spid + '&sppassword=' + sppassword
    //        //+ '&da=86' + message.mobilePhone + '&dc=8&sm=' + msg, function (data, response) {
    //        //    logger.info(data);
    //        //    if (response.statusCode = '200') {
    //        //        var result = data.split('&');
    //        //
    //        //        var temp = new shortMessage();
    //        //        temp.deviceId = message.deviceId;
    //        //        temp.mobilePhone = message.mobilePhone;
    //        //        temp.verificationCode = message.verificationCode;
    //        //        temp.messageId = result[2].split('=')[1];
    //        //        temp.status = result[3].split('=')[1];
    //        //        temp.errCode = result[4].split('=')[1];
    //        //        temp.save();
    //        //    }
    //        //}).on('error', function (err) {
    //        //    logger.error('set message to esmsl went wrong on the request' + err);
    //        //});
    //
    //    });
    //});
    //
    //
    //mqConnection.queue('q.log.loginOrRegister', function (q) {
    //    //Catch all messages
    //    q.bind('#');
    //    //Receive messages
    //    q.subscribe(function (message) {
    //        new loginOrRegisterLog(message).save();
    //    });
    //});
    //
    //mqConnection.queue('getuiPushMessage', function (q) {
    //    q.bind('#');
    //    //Receive messages
    //    q.subscribe(function (message) {
    //        var uList = new Array();
    //        var tList = new Array();
    //
    //        var badgeUsers = [];
    //
    //        logger.info('getui---')
    //        logger.info(message);
    //
    //        var ContentAvailable = '';
    //
    //        if (message.type == 'operate') {
    //            var temp = new pushRecords();
    //            temp.tag = message.tag;
    //            temp.message = message.content.desc;
    //            temp.messageId = message.content.contentId;
    //            temp.fromIp = message.ip;
    //            temp.save();
    //            ContentAvailable = "1";
    //        }
    //
    //        async.each(message.uList, function (userId, callback) {
    //            Users.findOne({_id: userId}, 'clientId appSetting', function (err, result) {
    //                var setting;
    //                if (result != null) {
    //                    setting = result.appSetting;
    //
    //                    if (message.type == 'operate') {
    //                        var temp = new operateMessage();
    //                        temp.user = userId;
    //                        temp.message = message.content.desc;
    //                        temp.messageId = message.content.contentId;
    //                        temp.createdBy = message.content.createdBy;
    //                        temp.url = message.content.url;
    //                        temp.openType = message.content.openType;
    //                        temp.tag = message.tag;
    //                        temp.save();
    //                    }
    //                }
    //                if (result != null && result.clientId != null) {
    //                    if (setting == null || setting.notDisturb == null || setting.notDisturb.on == false
    //                        || setting.notDisturb.startTime == null || setting.notDisturb.endTime == null
    //                        || !toolUtil.time_range(setting.notDisturb.startTime, setting.notDisturb.endTime)) {
    //
    //                        uList.push(result.clientId);
    //
    //                        var userT = {
    //                            userId: userId,
    //                            clientId: result.clientId
    //                        };
    //
    //                        badgeUsers.push(userT)
    //                    } else {
    //                        tList.push(result.clientId);
    //                    }
    //                }
    //                callback();
    //            });
    //        }, function (err) {
    //            if (err) {
    //                logger.info("getui---error---" + err.message);
    //            } else {
    //
    //                logger.info(uList)
    //
    //                var payload = {
    //                    ot: message.content.openType,
    //                    url: message.content.url,
    //                    t: message.content.type,
    //                    q: message.content.contentId,
    //                    by: message.content.createdBy
    //                };
    //
    //
    //                if (uList.length > 0) {
    //
    //                    var content = {
    //                        ot: message.content.openType,
    //                        f: message.content.flag,
    //                        t: message.content.type,
    //                        url: message.content.url,
    //                        q: message.content.contentId,
    //                        by: message.content.createdBy,
    //                        ds: message.content.desc
    //                    };
    //
    //                    if (message.type == 'operate') {
    //                        var pushData = {
    //                            targetUser: 3,
    //                            targetPlatform: 1,
    //                            tags: [],
    //                            users: uList,
    //                            message: message.content.desc,
    //                            transmissionContent: content,
    //                            transmissionType: 2,
    //                            actionLocKey: "",
    //                            badge: -1,
    //                            sound: "default",
    //                            payload: payload,
    //                            locKey: "",
    //                            locArgs: "",
    //                            launchImage: "",
    //                            ContentAvailable: ContentAvailable,
    //                            pushApns: 'yes'
    //                        };
    //                        //mqConnection.publish('q.push.info', pushData);
    //                        exchange.publish('r.push', pushData);
    //                    } else {
    //                        //badgeUsers.forEach(function (userId) {
    //                        //    SystemMessage.count({toUser: userId, readFlag: false}, function (err, count) {
    //                        //
    //                        //    })
    //                        //})
    //
    //                        logger.info('push--success')
    //
    //                        var pushData = {
    //                            targetUser: 3,
    //                            targetPlatform: 1,
    //                            tags: [],
    //                            users: uList,
    //                            message: message.content.desc,
    //                            transmissionContent: content,
    //                            transmissionType: 2,
    //                            actionLocKey: "",
    //                            badge: 1,
    //                            sound: "default",
    //                            payload: payload,
    //                            locKey: "",
    //                            locArgs: "",
    //                            launchImage: "",
    //                            ContentAvailable: ContentAvailable,
    //                            pushApns: 'yes'
    //                        };
    //                        //mqConnection.publish('q.push.info', pushData);
    //                        exchange.publish('r.push', pushData);
    //                    }
    //                }
    //
    //                if (tList.length > 0) {
    //
    //                    var content = {
    //                        ot: message.content.openType,
    //                        f: message.content.flag,
    //                        t: 2,
    //                        url: message.content.url,
    //                        q: message.content.contentId,
    //                        by: message.content.createdBy,
    //                        ds: message.content.desc
    //                    };
    //
    //                    var tPushData = {
    //                        targetUser: 3,
    //                        targetPlatform: 1,
    //                        tags: [],
    //                        users: tList,
    //                        message: message.content.desc,
    //                        transmissionContent: content,
    //                        transmissionType: 2,
    //                        actionLocKey: "",
    //                        badge: 1,
    //                        sound: "default",
    //                        payload: payload,
    //                        locKey: "",
    //                        locArgs: "",
    //                        launchImage: "",
    //                        ContentAvailable: ContentAvailable,
    //                        pushApns: 'no'
    //                    };
    //                    //mqConnection.publish('q.push.info', tPushData);
    //                    exchange.publish('r.push', tPushData);
    //                }
    //            }
    //        });
    //    });
    //});
    //
    //mqConnection.queue('q.push.transmission', function (q) {
    //    //Catch all messages
    //    q.bind('#');
    //    //Receive messages
    //    q.subscribe(function (message) {
    //        var uList = [];
    //
    //        console.log('q.push.transmission');
    //
    //        async.each(message.uList, function (userId, callback) {
    //            Users.findOne({_id: userId}, 'clientId', function (err, result) {
    //                if (result.clientId != null) {
    //                    uList.push(result.clientId);
    //                }
    //                callback();
    //            });
    //        }, function (err) {
    //            if (uList.length > 0) {
    //                var tPushData = {
    //                    targetUser: 3,
    //                    targetPlatform: 1,
    //                    tags: [],
    //                    users: uList,
    //                    message: "",
    //                    transmissionContent: message.content,
    //                    transmissionType: 2,
    //                    actionLocKey: "",
    //                    badge: 1,
    //                    sound: "default",
    //                    payload: "",
    //                    locKey: "",
    //                    locArgs: "",
    //                    launchImage: "",
    //                    ContentAvailable: "",
    //                    pushApns: 'no'
    //                };
    //                //mqConnection.publish('q.push.info', tPushData);
    //                exchange.publish('r.push', tPushData);
    //            }
    //        });
    //    });
    //});
    //
    //mqConnection.queue('q.push.tag', function (q) {
    //    //Catch all messages
    //    q.bind('#');
    //    //Receive messages
    //    q.subscribe(function (message) {
    //
    //        logger.debug('q.push.tag-----success');
    //
    //        var tPushData = {
    //            targetUser: 2,
    //            targetPlatform: 1,
    //            tags: message.tags,
    //            users: [],
    //            message: "",
    //            transmissionContent: message.content,
    //            transmissionType: 2,
    //            actionLocKey: "",
    //            badge: -1,
    //            sound: "default",
    //            payload: "",
    //            locKey: "",
    //            locArgs: "",
    //            launchImage: "",
    //            ContentAvailable: "",
    //            pushApns: message.pushApns
    //        };
    //        //mqConnection.publish('q.push.info', tPushData);
    //        exchange.publish('r.push', tPushData);
    //    });
    //});
});

